<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- <script>
        f=function(){
            return true;
        };
        g=function(){
            return false;
        };
        //自执行函数不会做变量提升,内部的内容可以做变量提升
        ~function(){//私有函数作用域---先看私有变量---继续找（作用域链）
            //g---undefined
            if(g()&&[]==![]){//g()--undefined()-- g is not a function
                f=function(){return false;};//不做变量提升
                function g(){//做变量提升---只声明，不赋值
                    return true;
                }
            }
        }();
        console.log(f());
        console.log(g());
    </script> -->
    <script>
        // fn---undefined
        // console.log(fn);//undefined
        // if(1==1){//函数变量提升,如果判断是真,{}当做私有作用域,重新在来一次变量提升：声明+赋值
        //     console.log(fn);//函数
        //     function fn(){
        //         console.log("ok");
        //     }
        // }
        // console.log(fn);//函数

        //a--undefined--0--函数---1
        // var a=0;
        // if(true){//声明+赋值
        //     a=1;
        //     function a(){}//以函数体为分割线，上面归属为上级作用域(全局 该题目)，下面归属为块级私有
        //     //a--函数--21
        //     a=21;
        //     console.log(a);//21
        // }
        // console.log(a);//1

        //num--undefined--100  fn--undefined--函数体
        // console.log(num);//undefined
        // console.log(fn);//undefined
        // if([]){
        //     fn()// a
        //     var num=100;
        //     function fn(){console.log("a")}
        // }
        // console.log(fn);//函数体
        // console.log(num);//100
 
    </script>
</body>
</html>